package controller;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Permet de parser une ligne de commande
 * 
 * @author S219
 * 
 */
public class ArgsParser {

	static final Pattern pArgs = Pattern.compile("((\".*?\")|(\\S+))(\\s*)");
	String commandName;
	List<String> args;

	/**
	 * Construit un {@link ArgsParser}.
	 * 
	 * @param line
	 *            Ligne de commande a parser
	 */
	public ArgsParser(String line) {

		Matcher m = pArgs.matcher(line);

		m.find();
		args = new ArrayList<String>();
		commandName = m.group(1);
		while (m.find()) {
			// Remplacement des guillemets en debut et en fin si ceux ci
			// existent
			args.add(m.group(1).replaceAll("(^\")|(\"$)", ""));
			

		}
	}

	/**
	 * Getter pour le nom de la command.
	 * 
	 * @return
	 */
	public String getCommandName() {
		return commandName;
	}

	/**
	 * 
	 * @return liste d'arguments
	 * 
	 */
	public List<String> getArgs() {
		return args;
	}

	public int getSize() {
		return args.size();
	}

	public String get(int i) {
		return args.get(i);
	}

	public boolean isCommand(String string) {
		return commandName.equals(string);
	}
}
